package com.fclassroom.logger.entity;

import java.io.Serializable;
import java.util.Date;

import com.fclassroom.logger.LoggerVar;
import com.fclassroom.logger.exception.LoggerException;
import com.jason.framework.util.DateUtil;
import com.jason.framework.util.StringUtil;

/**
 * @author jason
 * @date 2015年12月22日
 * 系统日志  <br/>
通过log4j来记录:
	logLevel|operateStartTime|appCategory|appType|appVersion|operateCategory|operateMethod|content
业务系统-：10，教师端；20，学生端；30，家长端业务
系统版本类型：11教师客户端；12教师安卓；13教师iOS；21学生安卓；22学生iOS；
 */
public class SystemLog implements Serializable {
	public SystemLog(String msg) throws LoggerException{
		if(StringUtil.isNotEmpty(msg)){
			String[] st=msg.split(LoggerVar.log_delim);
			if(st!=null && st.length==8){
				try {
					logLevel=st[0];
					operateStartTime=DateUtil.formatStringTodate(st[1], null);
					
					appCategory=Integer.valueOf(st[2]);
					appType=Integer.valueOf(st[3]);
					appVersion=st[4];
					
					operateCategory=st[5];
					operateMethod=st[6];
					
					content=st[7];
					
				} catch (Exception e) {
					// TODO: handle exception
				}
			}else{
				throw new LoggerException("10007");
			}
		}
	}
	
	private long id;
	/**
	 * 日志等级 DEBUG < INFO < WARN < ERROR
	 */
	private String logLevel;
	/**
	 * 操作模块名称 
	 * 业务系统-：10，教师端；20，学生端；30，家长端
	 */
	private Integer appCategory;
	/**
	 * 业务系统版本类型：11教师客户端；12教师安卓；13教师iOS；21学生安卓；22学生iOS；
	 */
	private Integer appType;  
    /**
     * 业务系统的版本 
     * 例如：1.2.1
     */
    private String appVersion;
    /**
     *  具体操作的数据，采用json格式。如果是http，封装 header,body，例如：headers:{} body: {}
     */
    private String content;
    /**
     * 业务模块的模块类别，例如：出卷，读卷
     */
	private String operateCategory;

	/**
     *  业务模块的具体方法，例如：添加填空题,http：get post等
     */
    private String operateMethod;
    /**
     * 执行操作的时间
     */
    private Date operateStartTime;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getLogLevel() {
		return logLevel;
	}
	public void setLogLevel(String logLevel) {
		this.logLevel = logLevel;
	}
	public Integer getAppCategory() {
		return appCategory;
	}
	public void setAppCategory(Integer appCategory) {
		this.appCategory = appCategory;
	}
	public Integer getAppType() {
		return appType;
	}
	public void setAppType(Integer appType) {
		this.appType = appType;
	}
	public String getAppVersion() {
		return appVersion;
	}
	public void setAppVersion(String appVersion) {
		this.appVersion = appVersion;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getOperateCategory() {
		return operateCategory;
	}
	public void setOperateCategory(String operateCategory) {
		this.operateCategory = operateCategory;
	}
	public String getOperateMethod() {
		return operateMethod;
	}
	public void setOperateMethod(String operateMethod) {
		this.operateMethod = operateMethod;
	}
	public Date getOperateStartTime() {
		return operateStartTime;
	}
	public void setOperateStartTime(Date operateStartTime) {
		this.operateStartTime = operateStartTime;
	}
   
}
